JaeHyeonKim19

[자바]백준 15666 N과 M (12)

2020-03-20


카운팅 정렬을 활용하자!

import java.io.*;
import java.util.*;

public class Main {
	static BufferedWriter bw;
	static int n;
	static int m;
	static int [] nums;
	static int [] temp;

	static void rec(int num, int index) throws IOException{
		temp[index] = num;
		if(index == temp.length - 1) {
			for(int i = 0; i < temp.length; i++) {
				bw.write(temp[i] + " ");
			}
			bw.write("\n");
			return;
		}
		for(int i = num; i < nums.length; i++) {
			if(nums[i] == 1) rec(i, index + 1);
		}
	}

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());
		nums = new int [10001];
		temp = new int [m];
		st = new StringTokenizer(br.readLine());
		for(int i = 0; i < n; i++) {
			nums[Integer.parseInt(st.nextToken())] = 1;
		}
		for(int i = 1; i < nums.length; i++) {
			if(nums[i] == 1) rec(i, 0);
		}
		bw.flush();
	}
}